<main class="main-container ng-scope" ng-view=""><div class="main receptacle post-view ng-scope"><article class="entry ng-scope" ng-controller="EntryCtrl" ui-lightbox=""><header><h1 class="entry-title ng-binding">NFS配置不当那些事</h1><div class="entry-meta"><a target="_blank" class="author name ng-binding">Blood_Zero</a> <span class="bull">·</span> <time title="2015/09/16 14:44" ui-time="" datetime="2015/09/16 14:44" class="published ng-binding ng-isolate-scope">2015/09/16 14:44</time></div></header><section class="entry-content ng-binding" ng-bind-html="postContentTrustedHtml"><p></p><h1>0x00 背景</h1><hr><p>NFS（Network File System）：是FreeBSD支持的文件系统中的一种，它允许网络中的计算机之间通过TCP/IP网络共享资源；</p><p>NFS配置：（声明：以下NFS实验是在RedHat7上完成）</p><p>首先安装NFS（我的机子是最小化的系统，需要自己安装）：</p><pre><code>#!bash
yum install nfs-utils.x86_64 -y
</code></pre><p>启动服务：</p><pre><code>#!bash
systemctl start rpcbind（如果这个服务不启动，nfs服务会启动失败）
systemctl start nfs-server
systemctl enable rpcbind;systemctl enable nfs-server 开机自启
firewall-cmd --permanent --add-service=nfs 让防火墙通过NFS服务
firewall-cmd --permanent --add-service=rpc-bind 通过rpc服务（如果不开启，rpcinfo就不能扫描）
firewall-cmd --permanent --add-service=mountd 通过mountd服务（如果不开启，不能远程showmount）
firewall-cmd --reload
配置：
mkdir /pentest（创建一个共享目录）
vi /etc/exports
cat /etc/exports
/ *(rw,sync,no_root_squash) （注意：问题就出在这个地方，原理在文后解释）
exportfs -r （启动共享）
showmount -e （查看共享）
客户端挂载：
mount -t nfs NFS服务器IP:/ /tmp/test （挂载到本地的/tmp/test中）
</code></pre><p><img alt="enter image description here" img-src="d1f81f07dc266a34df11f70c7f23bdc434c805ae.jpg"></p><p><img alt="enter image description here" img-src="f074db724b472c48ee38db3592b5162dec8aae5c.jpg"></p><h1>0x01 检测</h1><hr><p>对存在NFS配置错误的机子进行扫描：<code>rpcinfo -p 192.168.119.131</code></p><p><img alt="enter image description here" img-src="ae64728c12860401b17cb8cb6801fcfe9dc80141.jpg"></p><p>查看nfs挂载新型：<code>showmount -e 192.168.119.131</code></p><p><img alt="enter image description here" img-src="c700fc9d6952cb789da3e7bd3dd2a5b87d3ebcf0.jpg"></p><p>得到这些信息，我们就可以挂载NFS，并传输ssh永久连接文件</p><p><img alt="enter image description here" img-src="df928616254b4304622fbb5611fc5eb9c8a88729.jpg"></p><p><img alt="enter image description here" img-src="c3501d7c6ffb89e050d905563cf73368a8f40d85.jpg"></p><h1>0x02 总结</h1><hr><p>其实漏洞形成的原理就是权限不对，<code>/etc/exports</code>这个文件中的权限设置，我们上文采用的是<code>root</code>权限，所以导致服务器被入侵；</p><p><code>/etc/exports</code> 文件格式</p><pre><code>&lt;输出目录&gt; [客户端1 选项（访问权限,用户映射,其他）] [客户端2 选项（访问权限,用户映射,其他）]
</code></pre><p>a. 输出目录：输出目录是指NFS系统中需要共享给客户机使用的目录；</p><p>b. 客户端：客户端是指网络中可以访问这个NFS输出目录的计算机</p><p>指定ip地址的主机：<code>192.168.0.200</code></p><p>指定子网中的所有主机：<code>192.168.0.0/24 192.168.0.0/255.255.255.0</code></p><p>指定域名的主机：<code>david.bsmart.cn</code></p><p>指定域中的所有主机：<code>*.bsmart.cn</code></p><p>所有主机：<code>*</code></p><p>c. 选项：选项用来设置输出目录的访问权限、用户映射等。</p><p>设置输出目录只读：<code>ro</code></p><p>设置输出目录读写：<code>rw</code></p><p>d. 用户映射选项</p><p><code>all_squash</code>：将远程访问的所有普通用户及所属组都映射为匿名用户或用户组（<code>nfsnobody</code>）；</p><p><code>no_all_squash</code>：与<code>all_squash</code>取反（默认设置）；</p><p><code>root_squash</code>：将<code>root</code>用户及所属组都映射为匿名用户或用户组（默认设置）；</p><p><code>no_root_squash</code>：与<code>rootsquash</code>取反；</p><p><code>anonuid=xxx</code>：将远程访问的所有用户都映射为匿名用户，并指定该用户为本地用户（<code>UID=xxx</code>）；</p><p><code>anongid=xxx</code>：将远程访问的所有用户组都映射为匿名用户组账户，并指定该匿名用户组账户为本地用户组账户（<code>GID=xxx</code>）；</p><p>e. 其它选项</p><p><code>secure</code>：限制客户端只能从小于<code>1024</code>的<code>tcp/ip</code>端口连接<code>nfs</code>服务器（默认设置）；</p><p><code>insecure</code>：允许客户端从大于<code>1024</code>的<code>tcp/ip</code>端口连接服务器；</p><p><code>sync</code>：将数据同步写入内存缓冲区与磁盘中，效率低，但可以保证数据的一致性；</p><p><code>async</code>：将数据先保存在内存缓冲区中，必要时才写入磁盘；</p><p><code>wdelay</code>：检查是否有相关的写操作，如果有则将这些写操作一起执行，这样可以提高效率（默认设置）；</p><p><code>no_wdelay</code>：若有写操作则立即执行，应与<code>sync</code>配合使用；</p><p><code>subtree</code>：若输出目录是一个子目录，则<code>nfs</code>服务器将检查其父目录的权限(默认设置)；</p><p><code>no_subtree</code>：即使输出目录是一个子目录，<code>nfs</code>服务器也不检查其父目录的权限，这样可以提高效率。</p><p></p></section></article><div class="entry-controls clearfix"><div style="float:left;color:#9d9e9f;font-size:15px"><span>&copy;乌云知识库版权所有 未经许可 禁止转载</span></div></div><div class="yarpp-related"><h3>为您推荐了适合您的技术文章:</h3><ol id="recommandsystem"><li><a href="http://drops.wooyun.org/%e8%bf%90%e7%bb%b4%e5%ae%89%e5%85%a8/11801" rel="bookmark" id="re1">小议Linux安全防护(一)</a></li><li><a href="http://drops.wooyun.org/tips/1473" rel="bookmark" id="re2">从cloudstack默认配置看NFS安全</a></li><li><a href="http://drops.wooyun.org/tips/2457" rel="bookmark" id="re3">Linux被DDOS&amp;CC攻击解决实例</a></li><li><a href="http://drops.wooyun.org/tips/1424" rel="bookmark" id="re4">Iptables入门教程</a></li></ol></div><div id="comments" class="comment-list clearfix"><div id="comment-list"><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">1834788208</span> <span class="reply-time">2016-04-08 09:08:08</span></div><p></p><p>这个可以在win完成这个扫描到爆破的过程不</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">Blood_Zero</span> <span class="reply-time">2015-10-08 15:21:12</span></div><p></p><p>@Tea 服务器不开启mountd服务就可以屏蔽！</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">Tea</span> <span class="reply-time">2015-09-24 23:27:24</span></div><p></p><p>想请教下作者，在shoumount -e ip的时候,给出的信息有什么方法屏蔽掉（隐藏），或者有内外网的机器监听服务到内网，非iptables.谢谢。</p><p></p></div></div></div></div></div></main>